package li.service.impl;

import li.dto.Cart;
import li.dto.CartItem;
import li.dto.Sku;
import li.dto.TbUser;
import li.service.CartService;
import li.util.Cache;
import org.springframework.stereotype.Service;

import java.util.*;

@Service
public class CartServiceImpl implements CartService {
    @Override
    public void addToCart(Sku s, TbUser user) {
        Map<Integer, CartItem> cart = Cache.CART.get(user.getId());
        CartItem item=null;
        if(cart==null || cart.get(s.getId())==null){
            if(cart==null){
                cart = new HashMap<>();
                Cache.CART.put(user.getId(), cart);
            }
            item = new CartItem();
            item.setPrice(s.getPrice());
            item.setImgsrc(s.getImgsrc());
            item.setPname(s.getName());
            item.setSumprice(s.getPrice());
            item.setPid(s.getId());
            cart.put(s.getId(),item);
        }else {//购物车中，已经有了该商品，本次要把商品的数量和总价格修改
            item = cart.get(s.getId());
            item.setPcount(item.getPcount()+1);
            item.setSumprice(item.getSumprice()+s.getPrice());
        }
    }

    @Override
    public Cart findCart(TbUser user) {
        Map<Integer, CartItem> map = Cache.CART.get(user.getId());
        Cart cart = new Cart();
        Collection<CartItem> items = map.values();
        Integer totoPrice = 0;
        for (CartItem item : items) {
            totoPrice+=item.getSumprice();
        }
        cart.setTotalPrice(totoPrice);
        List list = new ArrayList();
        list.addAll(items);
        cart.setItems(list);
        return cart;
    }

    @Override
    public String changeItemNum(Integer pid, Integer pcount, TbUser user) {
        Map<Integer, CartItem> map = Cache.CART.get(user.getId());
        CartItem item = map.get(pid);
        item.setPcount(pcount);
        item.setSumprice(pcount*item.getPrice());
        return "success";
    }
}
